<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        var arrs = [1, 2, 2,2,2, 3, 3, 4, 5, 6, 7, 8, 5];
        // 方法一
        // var newarr = [];
        // for(var i=0;i<arrs.length;i++){
        //     newarr.push(arrs[i]);
        // }

        // console.log(newarr);

        // 上面是复制一个数组 

        // 去重  意思是 每个元素仅仅出现1次 

        // 遍历原数组的时候 先判断新数组中是否已经有这个元素了 如果没有插入到新数组中 如果
        // 如果有了 不往里放 

        // 数组.indexOf(元素)

        // 存在返回的是 第一次出现的索引 不存在返回-1

    //     var newarr = []; //准备一个空数组
    //     for (var i = 0; i < arrs.length; i++) {
    //         //判断元素是否在新数组中 不在插入进去 
    //         if (newarr.indexOf(arrs[i]) == -1) {
                // 如果原数组中的元素不在新数组中 那么就把这个元素插入到新数组中
    //             newarr.push(arrs[i]);
    //         }
    //     }

    //     console.log(newarr);

    // 方法二 
    // 先排序  
    // 前面一个跟后面一个进行比较 如果相同删除其中一个
    // 防止数组塌陷


    // 先排序  
    // console.log(arrs)
    // arrs.sort(function(a,b){return a-b});  // 升序 
    // console.log(arrs)
    // for(var i=0;i<arrs.length;i++){
    //     if(arrs[i] == arrs[i+1]){ // 始终是跟后边一个比较
    //         arrs.splice(i,1); // 如果前后相同 删除其中一个 
    //         i--; // 防止数组塌陷
    //     }
    // }
    // console.log(arrs)
    


    // 第三种方法  
    // 1.不排序 
    // 2.从当前开始  看下一个一直到最后有没有跟它一样的 如果有删除后边一样的  
    // 3.防止数组塌陷 
    // var arrs = [1, 2, 2,2,2, 3, 3, 4, 5, 6, 7, 8, 5];
    // for(var i=0;i<arrs.length;i++){
    //     // 从0开始 从1到最后 看看有没有跟下标0的元素一样的 如果有删除后边的
    //     var index = arrs.indexOf(arrs[i],i+1);
    //     // 从这个元素的下一个位置 开始 一直到最后 判断 是否有跟这个元素一样的
    //     if(index !== -1){ //说明有重复的
    //         arrs.splice(index,1); // 删除一个
    //         i--; // 防止数组塌陷
    //     }

    // }

    // console.log(arrs)
    // 方法四:
    // 集合数据结构  Set
    // 结构特点: 数据一定是唯一的
    // 方案  : 将数组转成集合  然后再将集合转回数组 实现去重的目的 
    // 
    // 1.创建集合  将数组传给集合 
    // 2.集合再转回数组 
    // var arrs = [1, 2, 2,2,2, 3, 3, 4, 5, 6, 7, 8, 5];
    // console.log(arrs)
    // var myset = new Set(arrs);
    // // console.log(myset)
    // // Array.from(集合)  将集合转成数组 
    // var res = Array.from(myset);
    // console.log(res);


    // ... 展开符
    // 可以展开 对象  数组  Set Map
    // 什么叫展开  去掉外边包裹的 把里边挨个拿出来 

    // var arrs = ['张三','李四','王五'];
    // var arrs1 = ['蔡徐坤','徐峥','陶虹'];

    // // 合并数组  
    // // var res = arrs.concat(arrs1);
    // // console.log(res)

    // var res = [...arrs,...arrs1];
    // console.log(res)


    // var obj = {
    //     name:'zhangsan',
    //     age:18
    // }

    // var obj2 = {
    //     'height':'181cm',
    //     weight:'60kg',
    // }

    // var res = {...obj,...obj2}
    // console.log(res)



    // 数组去重  

    var arrs = [1, 2, 2,2,2, 3, 3, 4, 5, 6, 7, 8, 5];
    // 创建集合 
    var myset = new Set(arrs);

    // 把集合展开放到空数组中
    var res = [...myset];

    console.log(res)
    </script>
</body>

</html>